TI(德州仪器)TMS320C674x 逆向分析方法
一、闲语
去年听闻看雪融资了,一看新闻发现才融资 500 万,在这个泡沫膨胀的互联网+年代,真是太少了。像我这种只知索取,从未回馈论坛的人深感惭愧,无赖水平有限,如今终于拼凑一篇文章,发到看雪,聊表心意。
TI 的逆向,网上能找到的资料很少,个人也并不懂嵌入式开发,整个逆向流程都是根据其他平台逆向经验,一步一步摸索出来,也许很多步骤非常LOW,如果有什么错误请批评指正,或者有更好的方法请不吝赐教。
二、正向开发流程
C 语言开发,开发工具使用 CCS(Code Composer Studio,基于 eclipse 开发的),有过开发经验的都会很容易上手,新建 test 工程,选择 C674x,输出文件为 ELF 格式,如图所示:
编译成功后,会生成 test.out 文件(ELF 格式)。
使用 TI 提供的 AISgen_d800k008.exe 把 .out 转成了 ais 格式:
最后将 test.bin 烧入设备即可。
三、逆向初步
逆向分析就是在仅仅只有 bin 文件的条件下,还原原来程序功能。IDA 对 TI 指令的反汇编支持很差,最新版本的 6.8 才有对 6xxxx 的支持,并且效果非常不好。我所用的方法是先把 AIS 格式还原为 ELF 格式,再使用 CCS 进行反汇编。
1、把 AIS 格式的 test.bin 还原为 ELF 格式文件
使用 UE 比对 test.bin 和 test.out,可以发现,test.out 中的 ELF 头和很多节被删除,只保留了几个基本的节。下面是 readelf -a test.out 的结果:
而 test.bin 中仅仅保留了.text .const .cinit 和入口点信息。
本来开始准备自己手动一点点还原的,后来在 AISgen 的安装目录下发现了一个程序 aisparse.exe,一看这名字就感觉有戏,运行结果:
Usage: aisparse ais.bin [ais.h]
果不其然,这个就是用来解析 bin 格式的,输入为 .bin 文件,输出为 .h 文件:
一下就清晰了很多,顺手写了个 AIS –> ELF 的小程序。当然,生成的 test.elf 相比原先的 test.out 丢失了很多信息。
2、逆向ELF
没有找到好的工具反汇编,最后发现使用 CCS 的调试功能的可以进行反汇编。这也需要一定的小技巧:使用 CCS 随便写一个程序,调试,在调试界面,依次选择 Run->Load->Load Program,选择 test.elf,就能调试了 test.elf,也可以从中 copy 出反汇编代码静态分析。需要注意的是,这里的反汇编代码有的地方是错误的哦,非常坑!
后面具体的指令格式,多看看 TI 官网文档:
http://www.ti.com/product/tms320c6745/technicaldocuments
里面资料非常详细,可以对着里面一个个看,用的比较多的两个文档:
TMS320C674x 指令格式:TMS320C674x DSP CPU and Instruction Set User's Guide .pdf
芯片相关的接口地址可以到这里找: TMS320C6745, TMS320C6747 Fixed- and Floating-Point Digital Signal Processor (Rev. F)
热 门 阅 读:
攻击 Western Digital NAS 个人云存储设备
......
更多优秀文章点击左下角“阅读原文”查看!
看雪论坛:http://bbs.pediy.com
微信公众号 ID:ikanxue
微博:看雪安全
投稿、合作:www.kanxue.com